home *** CD-ROM | disk | FTP | other *** search
Oberon Text | 1991-02-14 | 1015 b | 31 lines | [.Ob./.Ob2] |
- Syntax10.Scn.Fnt
- MODULE Mandelbrot; (* gri/mf 15.8.89 *)
- IMPORT
- D:=Display, I:=Input;
- CONST
- N=100; X=653; Y=299;
- TYPE
- COMPLEX=RECORD re, im: REAL END;
- PROCEDURE Iterate(c: COMPLEX; n: INTEGER): INTEGER;
- VAR z, d: COMPLEX; i: INTEGER;
- BEGIN i:=0; z:=c; d.re:=z.re*z.re; d.im:=z.im*z.im;
- WHILE (i <= n) &(d.re+d.im <= 4.0) DO
- z.im:=2*z.re*z.im+c.im; z.re:=d.re-d.im+c.re;
- d.re:=z.re*z.re; d.im:=z.im*z.im;
- INC(i)
- END;
- RETURN i
- END Iterate;
- PROCEDURE Draw*;
- VAR z: COMPLEX; startre, stepre, stepim: REAL; x, y, i: INTEGER;
- BEGIN startre:=-2.1; stepre:=3/(1150-X); stepim:=2.0/Y; z.re:=startre; z.im:=1.05; y:=Y;
- WHILE y > 2 DO DEC(y); z.im:=z.im-stepim; x:=X; z.re:=startre;
- WHILE x < 1150 DO i:=Iterate(z, N);
- IF ODD(Iterate(z, N)) THEN D.Dot(D.white, x, y, D.replace) ELSE D.Dot(D.black, x, y, D.replace) END;
- INC(x); z.re:=z.re+stepre
- END;
- IF I.Available() > 0 THEN RETURN END
- END
- END Draw;
- END Mandelbrot.Draw <- This is a command!
-